export default function unmountNode(node) {
  const vDom = node._vDom

  if (vDom.type === 'text') {
    node.remove()
    return
  }

  const component = vDom.component
  if(component) {
    console.log('触发卸载组件钩子')
    component.componentWillUnmount()
  }

  if (vDom.props && vDom.props.ref) {
    vDom.props.ref(null)
  }

  Object.keys(vDom.props).forEach(propName => {
    if (propName.slice(0, 2) === 'on') {
      const event = propName.slice(2).toLowerCase()
      node.removeEventListener(event, vDom.props[propName])
    }
  })

  // 如果node具有子元素，递归删除子元素
  if (node.childNodes.length > 0) {
    for (let i = node.childNodes.length - 1; i >= 0; i--) {
      unmountNode(node.childNodes[i])
    }
  }
  node.remove()
}